1use crate::ast::common::Span;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5pub struct BlockStatement {
6 pub body: Vec<crate::ast::node::Node>,
7 pub span: Option<Span>,
8}
9
10#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
11pub struct IfStatement {
12 pub test: Box<crate::ast::node::Node>,
13 pub consequent: Box<crate::ast::node::Node>,
14 pub alternate: Option<Box<crate::ast::node::Node>>,
15 pub span: Option<Span>,
16}
17
18#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
19pub struct ForStatement {
20 pub init: Option<Box<crate::ast::node::Node>>,
21 pub test: Option<Box<crate::ast::node::Node>>,
22 pub update: Option<Box<crate::ast::node::Node>>,
23 pub body: Box<crate::ast::node::Node>,
24 pub span: Option<Span>,
25}
26
27#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
28pub struct ForInStatement {
29 pub left: Box<crate::ast::node::Node>,
30 pub right: Box<crate::ast::node::Node>,
31 pub body: Box<crate::ast::node::Node>,
32 pub span: Option<Span>,
33}
34
35#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
36pub struct ForOfStatement {
37 pub left: Box<crate::ast::node::Node>,
38 pub right: Box<crate::ast::node::Node>,
39 pub body: Box<crate::ast::node::Node>,
40 pub span: Option<Span>,
41}
42
43#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
44pub struct WhileStatement {
45 pub test: Box<crate::ast::node::Node>,
46 pub body: Box<crate::ast::node::Node>,
47 pub span: Option<Span>,
48}
49
50#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
51pub struct DoWhileStatement {
52 pub body: Box<crate::ast::node::Node>,
53 pub test: Box<crate::ast::node::Node>,
54 pub span: Option<Span>,
55}
56
57#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
58pub struct SwitchStatement {
59 pub discriminant: Box<crate::ast::node::Node>,
60 pub cases: Vec<SwitchCase>,
61 pub span: Option<Span>,
62}
63
64#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
65pub struct SwitchCase {
66 pub test: Option<Box<crate::ast::node::Node>>,
67 pub consequent: Vec<crate::ast::node::Node>,
68 pub span: Option<Span>,
69}
70
71#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
72pub struct TryStatement {
73 pub block: Box<crate::ast::node::Node>,
74 pub handler: Option<Box<crate::ast::node::Node>>,
75 pub finalizer: Option<Box<crate::ast::node::Node>>,
76 pub span: Option<Span>,
77}
78
79#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
80pub struct CatchClause {
81 pub param: Box<crate::ast::node::Node>,
82 pub body: Box<crate::ast::node::Node>,
83 pub span: Option<Span>,
84}
85
86#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
87pub struct ThrowStatement {
88 pub argument: Box<crate::ast::node::Node>,
89 pub span: Option<Span>,
90}
91
92#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
93pub struct ReturnStatement {
94 pub argument: Option<Box<crate::ast::node::Node>>,
95 pub span: Option<Span>,
96}
97
98#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
99pub struct BreakStatement {
100 pub label: Option<Box<crate::ast::node::Node>>,
101 pub span: Option<Span>,
102}
103
104#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
105pub struct ContinueStatement {
106 pub label: Option<Box<crate::ast::node::Node>>,
107 pub span: Option<Span>,
108}
109
110#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
111pub struct LabeledStatement {
112 pub label: Box<crate::ast::node::Node>,
113 pub body: Box<crate::ast::node::Node>,
114 pub span: Option<Span>,
115}
116
117#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
118pub struct WithStatement {
119 pub object: Box<crate::ast::node::Node>,
120 pub body: Box<crate::ast::node::Node>,
121 pub span: Option<Span>,
122}
123
124#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
125pub struct DebuggerStatement {
126 pub span: Option<Span>,
127}
128
129#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
130pub struct ExpressionStatement {
131 pub expression: Box<crate::ast::node::Node>,
132 pub span: Option<Span>,
133}